package com.projectplace.api.objectResponses;

/*
 * Copyright (c) 2011 Projectplace International AB
 * Permission is hereby granted, free of charge, to any person 
 * obtaining a copy of this software and associated documentation 
 * files (the "Software"), to deal in the Software without restriction, 
 * including without limitation the rights to use, copy, modify, merge, 
 * publish, distribute, sublicense, and/or sell copies of the Software, 
 * and to permit persons to whom the Software is furnished to do so, 
 * subject to the following conditions:The above copyright notice and this 
 * permission notice shall be included in all copies or substantial portions of the Software.
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */


import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;




public class ppApiCoWorkers implements Iterable<ppApiUser>{	
	
	
	private HashMap<String , ppApiUser> coWorkers;
	private HashMap<Integer,String> indexCoWorkers;
	public ppApiCoWorkers(JSONArray array){
		indexCoWorkers = new HashMap<Integer, String>();
		coWorkers = new HashMap<String, ppApiUser>();
		addToCoWorkers(array);
	}
	
	public ppApiUser getUserByID(String userID){
		return coWorkers.get(userID);
	}
	
	public ppApiUser getCoWokerByIndex(int index){
		return coWorkers.get(indexCoWorkers.get(index));
	}
	
	public Set<String> getAllCoWorkers(){
		return coWorkers.keySet();
	}
	
	public Iterator<ppApiUser> iterator() {
		Iterator<ppApiUser> coWorkerIterator = coWorkers.values().iterator();
		return coWorkerIterator;
	}
	
	public int size(){
		return coWorkers.size();
	}
	
	public boolean contains(String key){
		return coWorkers.containsKey(key);
	}
	
	
	private void addToCoWorkers(JSONArray arr){
		int lenght = arr.length();
		for(int i=0; i < lenght;i++){
			ppApiUser temp;
			try {
				temp = new ppApiUser(arr.getJSONObject(i));
				coWorkers.put(temp.getID(), temp);
				indexCoWorkers.put(i, temp.getID());
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
